﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Data.OracleClient;
using System.Text;
using StandardDAC.Base;

namespace StandardDAC.OracleClient {
    public class OracleColumn : DBColumn {
        public OracleColumn(string name, OracleType dbType)
            : base(name, dbType) {
        }

        public OracleColumn(string name, OracleType dbType, object nullValue)
            : base(name, dbType, nullValue) {
        }

        public OracleColumn(string name, OracleType dbType, object nullValue, bool isPrimaryKey)
            : base(name, dbType, nullValue, isPrimaryKey) {
        }

        public OracleColumn(string name, OracleType dbType, object nullValue, bool isPrimaryKey, bool isIdentity)
            : base(name, dbType, nullValue, isPrimaryKey, isIdentity) {
        }
    }
    public class StringOracleColumn : OracleColumn {
        public StringOracleColumn(string name) : base(name, OracleType.VarChar) { }
        public StringOracleColumn(string name, object nullValue) : base(name, OracleType.VarChar, nullValue) { }
    }
    public class PKOracleColumn : OracleColumn {
        public PKOracleColumn(string name) : base(name, OracleType.Int32, null, true) { }
        public PKOracleColumn(string name, object nullValue) : base(name, OracleType.Int32, nullValue, true) { }
        public PKOracleColumn(string name, OracleType dbType, object nullValue) : base(name, dbType, nullValue, true) { }
    
        public PKOracleColumn(string name, short parameterOrder, bool isIdentity) : base(name, OracleType.Int32, null, true, isIdentity) { }
        public PKOracleColumn(string name, object nullValue, short parameterOrder, bool isIdentity) : base(name, OracleType.Int32, nullValue, true, isIdentity) { }
        public PKOracleColumn(string name, OracleType dbType, object nullValue, short parameterOrder, bool isIdentity) : base(name, dbType, nullValue, true, isIdentity) { }
    }
    public class IdentityNotPKOracleColumn : OracleColumn {
        public IdentityNotPKOracleColumn(string name, short parameterOrder) : base(name, OracleType.Int32, null, false, true) { }
        public IdentityNotPKOracleColumn(string name, object nullValue, short parameterOrder) : base(name, OracleType.Int32, nullValue, false, true) { }
        public IdentityNotPKOracleColumn(string name, OracleType dbType, object nullValue, short parameterOrder) : base(name, dbType, nullValue, false, true) { }
    }
}
